﻿<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="_Proyecto.aspx.cs" MasterPageFile="MasterPage.Master" Inherits="Web.Pages._Proyecto" %>

<asp:Content ID="mainContent" ContentPlaceHolderID="MainContent" runat="Server" >

    <!--$(document).ready-->  
    <script type="text/javascript" >

        var _proyectoInfo = null;

        var _params = null;

        var controles = { General: {}, Proyecto: {}, Tablas: { Guiones: {} } };
        /* General */
        controles.General.btnGuardar    = "btnGuardar";
        controles.General.btnEliminar   = "btnEliminar";
        controles.General.btnNuevoGuion = "btnNuevoGuion";
        /* Tablas */
        controles.Tablas.Guiones.Id     = "tblGuiones";
        /* Proyecto */
        controles.Proyecto.EstadoGuion  = "<%= selEstadoGuion.ClientID %>";
        controles.Proyecto.Tipo         = "<%= selProyecto_Tipo.ClientID %>";
        controles.Proyecto.Nombre       = "<%= txtProyecto_Nombre.ClientID %>";
        controles.Proyecto.Descripcion  = "<%= txtProyecto_Descripcion.ClientID %>";

        $(document).ready(function()
        {
            procesarParametros();
            cargarPagina_Proyecto();
        });
        function procesarParametros()
        {
            Framework.Page.Parameters.parseQueryString();
        }
        function cargarPagina_Proyecto()
        {
            Site.Messages.showLoadingMessage();

            Site.Page.setTitle( (isEmpty(Framework.Page.Parameters.idProyecto) ? "Alta de nuevo " : "Edición de ") + "Proyecto" );

            crearPlaceHolders();

            $("#" + controles.General.btnGuardar).click(function () { guardarDatos(); });
            $("#" + controles.General.btnEliminar).click(function () { eliminarDatos(); });
            $("#" + controles.General.btnNuevoGuion).click(function () { crearGuion(Framework.Page.Parameters.idProyecto); });

            Helpers.MultiSelectHelper.configure("#" + controles.Proyecto.Tipo, false);
            Helpers.MultiSelectHelper.bindOnChange("#" + controles.Proyecto.Tipo, onTipoProyecto_Change);

            if (!isEmpty(Framework.Page.Parameters.idProyecto))
            {
                $("#pnlGrillaGuiones").fadeIn();
                inicializarGrillaGuiones();
            }

            Site.Messages.hideLoadingMessage();
        }
        function crearPlaceHolders()
        {
            addPlaceHolder(controles.Proyecto.Nombre, "<< NOMBRE >>");
            addPlaceHolder(controles.Proyecto.Descripcion, "<< DESCRIPCIÓN >>");
        }
        function deshabilitarControles()
        {
            habilitarControl(controles.General.btnGuardar, false);
            habilitarControl(controles.General.btnEliminar, false);

            habilitarControl(controles.Proyecto.Nombre, false);
            habilitarControl(controles.Proyecto.Descripcion, false);
        }
    </script>
    
    <!-- Obtener Datos -->
    <script type="text/javascript" >
        function onTipoProyecto_Change(seleccionado, valor, texto)
        {
            //if (seleccionado == true && $("#" + controles.Guion.Titulo).val().length == 0) {
            //    $("#" + controles.Guion.Titulo).val(texto);
            //}
        }
    </script>

    <!-- Guardar Datos -->
    <script type="text/javascript" >
        function guardarProyecto()
        {
            var proyectoInfo =
            {
                Id             : Framework.Page.Parameters.idProyecto != null ? Framework.Page.Parameters.idProyecto : Constants.Entities.DefaultId,
                IdTipo         : Helpers.MultiSelectHelper.getFirstSelectedValue(controles.Proyecto.Tipo, Constants.Entities.DefaultId),
                Nombre         : $("#" + controles.Proyecto.Nombre).val(),
                Descripcion    : $("#" + controles.Proyecto.Descripcion).val()
            }
            return proyectoInfo;
        }
        function guardarDatos()
        {
            var proyectoInfo = guardarProyecto();
            if ( !validarGuardarDatos(proyectoInfo) )
                return;

            enableButton(controles.General.btnGuardar, false, guardarProyecto);
            
            Site.Messages.showLoadingMessage();

            Helpers.AJAXHelper.invoke("guardarProyecto", "{'infoProyecto':'" + JSON.stringify(proyectoInfo).replace(/'/g, "\\'") + "'}", guardarDatos_Respuesta, null, null );
        }
        function guardarDatos_Respuesta(datos)
        {
            enableButton(controles.General.btnGuardar, true, guardarProyecto);

            Site.Messages.hideLoadingMessage();

            var tipoNotificacion = null;
            var forzarCierre = false;
            var fnReturn = null;

            var respuesta = jQuery.parseJSON(datos.d);
            if ( respuesta.Resultado )
            {
                tipoNotificacion = _notifications.success;
                forzarCierre = false;
                fnReturn = verProyectos;
            }
            else
            {
                tipoNotificacion = _notifications.error;
                forzarCierre = true;
            }

            mostrarNotificacion(tipoNotificacion, respuesta.Mensaje, forzarCierre, fnReturn);
        }
    </script>

    <!-- Eliminar Datos -->
    <script type="text/javascript" >
        function eliminarDatos()
        {
            eliminarProyecto(Framework.Page.Parameters.idProyecto, verProyectos);
        }
    </script>

    <!-- Validaciones -->
    <script type="text/javascript" >
        function validarGuardarDatos(proyectoInfo)
        {
            var errores = [];
            
            validarDatosProyecto(proyectoInfo, errores);

            if ( errores.length > 0 )
                return false;
            else
                return true;
        }
        function validarDatosProyecto(proyectoInfo, errores)
        {
            if ( proyectoInfo.IdTipo == Constants.Entities.DefaultId )
                registrarError($("#" + controles.Proyecto.Tipo).next(), errores);
            if ( isEmpty(proyectoInfo.Nombre) )
                registrarError($("#" + controles.Proyecto.Nombre), errores);
            if ( isEmpty(proyectoInfo.Descripcion) )
                registrarError($("#" + controles.Proyecto.Descripcion), errores);
        }
    </script>

    <!-- Grilla Guiones -->
    <script type="text/javascript" >
        function inicializarGrillaGuiones()
        {
            var estadosGuion  = Helpers.SelectListHelper.getDataFromSelectList(controles.General.EstadoGuion, true);
                
	        var colModel =
            [
                { name: 'IdProyecto',   index: 'Proyecto.Id',   label: 'IdProyecto',        align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },
                { name: 'Id',           index: 'Id',            label: 'Id',                align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },
                { name: 'Activo',       index: 'Activo',        label: 'Activo',            align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Boolean', stype: 'select', searchoptions: { searchhidden: true, sopt: ['eq'], value: '1:ACTIVO;0:INACTIVO' } },

                { name: 'AdaptadorId',  index: 'Adaptador.Id',  label: 'Id Adaptador',      align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },
                { name: 'DirectorId',   index: 'Director.Id',   label: 'Id Director',       align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },
                { name: 'MezcladorId',  index: 'Mezclador.Id',  label: 'Id Mezclador',      align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },
                { name: 'TraductorId',  index: 'Traductor.Id',  label: 'Id Traductor',      align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },

                { name: 'Episodio',     index: 'Episodio',      label: 'Ep.',               align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 50, searchoptions: { sopt: ['eq', 'ne', 'gt', 'lt'] } },
                { name: 'Guion',        index: 'Titulo',        label: 'Título',            align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'String', width: 500, searchoptions: { sopt: ['eq', 'ne', 'bw', 'cn'] } },
                { name: 'Loops',        index: 'Loops',         label: 'Loops',             align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 80 },
                { name: 'Fecha',        index: 'FechaCreacion', label: 'Fecha Creación',    align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'DateTime', width: 150, searchoptions: { sopt: ['eq', 'ne', 'gt', 'lt'], dataInit: datePick, attr: { title: 'Seleccionar Fecha' } }, formatter: 'date', formatoptions: { srcformat: 'Y-m-d', newformat: 'd/m/Y' } },
                { name: 'Estado',       index: 'Estado.Nombre', label: 'Estado',            align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'String', width: 250, stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: estadosGuion }, formatter: jqGridFormatter_EstadoGuion }
            ];

            var gridOpts                            = Helpers.jqGridHelper.createGridObject();
                gridOpts.IdGrid                     = "{0}_Grid".format(controles.Tablas.Guiones.Id);
                gridOpts.IdPager                    = "{0}_GridPager".format(controles.Tablas.Guiones.Id);
                gridOpts.IdColModel                 = "{0}_GridColModel".format(controles.Tablas.Guiones.Id);
                gridOpts.ColModel                   = colModel;
                gridOpts.Width                      = _GridInfo.Defaults.Width;
                gridOpts.Height                     = _GridInfo.Defaults.Height / 2;
                gridOpts.Title                      = setGridTitle("Guiones asociados al Proyecto");
                gridOpts.DefaultSortColumn          = "Episodio";
                gridOpts.DefaultSortOrder           = "asc";
                gridOpts.PageSizeList               = [5, 10, 20, 30, 50, 100];
                gridOpts.DefaultPageSize            = _GridInfo.Defaults.PageSize;
            /* jqGrid Properties */
                gridOpts.AutoWidth                  = false;
                gridOpts.ShrinkToFit                = false;
                gridOpts.LoadFiltersOnSearch        = false;
            /* jqGrid Instance Urls & Params */
                gridOpts.UrlGet                     = "obtenerGuiones";
            /* jqGrid Pager Buttons */
                gridOpts.ShowSearch                 = false;
                gridOpts.ShowRefresh                = false;
            /* jqGrid Extra Functions */
                gridOpts.LoadFilters                = grillaGuiones_LoadFilters;
                gridOpts.OnLoadComplete             = grillaGuiones_OnLoadComplete;

            Helpers.jqGridHelper.setGridOpts(gridOpts);
        }
        function grillaGuiones_LoadFilters()
        {
            var rules = [];

            if (!isEmpty(Framework.Page.Parameters.idProyecto))
            {
                var condicionProyecto =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Proyecto.Id", op: "eq", data: Framework.Page.Parameters.idProyecto }
                        ]
                    };
                rules.push( condicionProyecto );
            }

            var condicionActivo =
                {
                    condition: "AND",
                    set:
                    [
                        { match: "OR", field: "Activo", op: "eq", data: 1 },
                        { match: "OR", field: "Activo", op: "eq", data: $("#chkVerInactivos").is(':checked') ? 0 : 1 }
                    ]
                };
            rules.push( condicionActivo );

            if ( !validarPermisosAdmin(_CurrentUser.Tipo) )
            {
                var condicionUsuario = 
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "OR", field: "Adaptador.Id",   op: "eq", data: _CurrentUser.Id },
                            { match: "OR", field: "Director.Id",    op: "eq", data: _CurrentUser.Id },
                            { match: "OR", field: "Mezclador.Id",   op: "eq", data: _CurrentUser.Id },
                            { match: "OR", field: "Traductor.Id",   op: "eq", data: _CurrentUser.Id }
                        ]
                    };
                rules.push(condicionUsuario);
            }

            return JSON.stringify(rules);

            //var filtro =
            //    [
            //        { match: "", field: "Activo", op: "=", data: $("#chkVerInactivos").is(':checked') ? 0 : 1 }
            //    ];
            //return JSON.stringify(filtro);
        }
        datePick = function(elem)
        {
           jQuery(elem).datepicker();
           //jQuery(elem).datepicker( { minDate: -20, maxDate: "+1M +10D" } );
        }
        function grillaGuiones_OnLoadComplete()
        {
            grillaGuiones_AgregarHandlersBotones();
        }
        function grillaGuiones_AgregarHandlersBotones()
        {
            $(".btnVerGuion").click
            (
                function()
                {
                    var idGuion = $(this).attr("id").replace("btnVerGuion_", "");
                    var celda   = $(this).parent();
                    var fila    = celda.parent();
                    editarGuion( idGuion );
                }
            );
            mostrarTooltip(".btnVerGuion", "Ver detalle del Guión");
        }
        function grillaGuiones_Refrescar()
        {
            Helpers.jqGridHelper.reloadGrid("{0}_Grid".format(controles.Tablas.Guiones.Id));
        }    
    </script>

    <!--HTML-->
    <div id="content" style="margin:0 auto; width:90%;" >

        <!-- BOTONERA -->
        <div style="margin-top:20px; margin-bottom:20px;" >
            <table width="100%" border="0" cellpadding="0" cellspacing="0" >
                <colgroup>
                    <col width="80%" />
                    <col width="20%" />
                </colgroup>
                <tr>
                    <td>
                        <!--
                        <label>Estado actual: </label>
                        <select id="selUsuario_Estado" multiple="multiple" ></select>
                        -->
                    </td>
                    <td align="right" >
                        <div id="btnGuardar" class="boton" >
                            <img src="Images/16x16/guardar.png" alt="Guardar" />&nbsp;Guardar
                        </div>
                        <div id="btnEliminar" class="boton" >
                            <img src="Images/16x16/eliminar.png" alt="Guardar" />&nbsp;Eliminar
                        </div>
                    </td>
                </tr>
            </table>
        </div>
        <!-- Fin de [BOTONERA] -->

        <div style="width:500px" >
            <table width="100%" border="0" cellpadding="0" cellspacing="0" >
                <colgroup>
                    <col width="20%" />
                    <col width="80%" />
                </colgroup>
                <tr>
                    <td style="vertical-align:top" ><b><label>Tipo:</label></b></td>
                    <td><select id="selProyecto_Tipo" multiple="true" runat="server" ></select></td>
                </tr>
                <tr>
                    <td style="vertical-align:top" ><b><label>Nombre:</label></b></td>
                    <td><input id="txtProyecto_Nombre" class="txtValor" type="text" style="width:99%" runat="server" /></td>
                </tr>
                <tr>
                    <td style="vertical-align:top" ><b><label>Descripción:</label></b></td>
                    <td><textarea id="txtProyecto_Descripcion" class="txtValor" style="width:99%" rows="3" cols="1" runat="server" ></textarea></td>
                </tr>
            </table>
        </div>

        <br />
        

        <div id="pnlGrillaGuiones" style="display:none" >
            
            <span>
                <img src="Images/16x16/guion.png" alt="Nuevo Guión" />
                <a href="#" id="btnNuevoGuion" class="link" >Nuevo Guión</a>
            </span>

            <div class="ui-widget" >
                <input id="chkVerInactivos" type="checkbox" style="vertical-align:middle; cursor:pointer" />
                <label style="vertical-align:middle;" >Ver inactivos</label>
            </div>

            <!-- Grilla Guiones -->
            <div id="grillaGuiones" >
                <table id="tblGuiones_Grid" ></table>
                <div id="tblGuiones_GridPager" ></div>
                <input type="hidden" id="tblGuiones_GridColModel" />      
            </div>

        </div>
        
        <span style="display:none" >
            <select id="selEstadoGuion" multiple="true" runat="server" ></select>
        </span>

        <br />

    </div>

</asp:Content>